/* Header file for the engine of LOCKJAW, an implementation of the Soviet Mind Game

Copyright (C) 2006 Damian Yerrick <tepples+lj@spamcop.net>

This work is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Original game concept and design by Alexey Pajitnov.
The Software is not sponsored or endorsed by Alexey Pajitnov, Elorg,
or The Tetris Company LLC.

*/

package fizzpicks.tetrapulp.tetrapulp;

import java.util.EnumSet;
import java.util.Set;

import static fizzpicks.tetrapulp.tetrapulp.Lockjaw.*;

// for other
enum LJI {
    HOLD,
    LOCK
}

// for dirty bits
enum LJ_DIRTY {
    NEXT,
    SCORE
}

enum LJRAND {
    PURE,
    BAG,
    BAGPLUS1,
    _2BAG,
    HIST_INF,
    HIST_6,
}

enum LJRAND2 {
    _4BLK(LJRandom.piecesTetrominoes),
    JLOSTZ(LJRandom.piecesNoI),
    SZ(LJRandom.piecesSZ),
    I(LJRandom.piecesI),
    _234BLK(LJRandom.piecesWithSmall);
    private Set<LJP> set;
    LJRAND2(Set<LJP> set) {this.set = set;}
    public Set<LJP> getSet() {return set;}
}

enum LJTS {
    OFF,
    TNT,
    TDS,
    TDS_NO_KICK,
}

enum LJSPD {
    ZERO,
    RHYTHMZERO,
    EXP,
    RHYTHM,
    TGM,
    DEATH,
    DEATH300,
    NES,
    GB,
    GBHEART,
    PLAYER_DEFAULT
}

enum LJLOCK {
    NOW,
    SPAWN,
    STEP,
    MOVE,
}

enum LJGRAV {
    NAIVE,
    STICKY,
    STICKY_BY_COLOR,
    CASCADE,
}

enum LJSCORE {
    LJ,
    TNT64,
    HOTLINE,
    TDS,
    NES,
    LJ_NERF,
    N_STYLES,
    WORLDS,
    TGM1,
    IPOD
}

enum LJDROP {
    NOSCORE,
    NES,
    _1CELL,
    _1S_2H,
}

enum LJGARBAGE {
    NONE(0),
    _1(1),
    _2(2),
    _3(3),
    _4(4),
    HRDERBY(5),
    DRILL(6),
    ZIGZAG(7);
    int g;
    LJGARBAGE(int g) {this.g = g;}
}

enum LJHOLD {
    NONE,
    EMPTY,
    TNT,
    TO_NEXT,
}

enum LJGLUING {
    NONE,
    SQUARE,
    STICKY,
    STICKY_BY_COLOR,
}

/**
 * Names of the supported rotation systems (wktables.c).
 */
enum LJROT {
    SRS,
    SEGA,
    ARIKA,
    ATARI,
    NES,
    GB,
    TOD,
    TDX,
}

enum IsSpin {
    NONE,
    TWIST,
    TWISTKICK
}

class SpeedStateBase {
    LJSPD curve = LJSPD.RHYTHMZERO;
    int section;
    byte[] pad = new byte[2];
    int level;
}

